package org.example;

import org.apache.poi.xwpf.usermodel.*;

import java.io.FileInputStream;
import java.io.FileOutputStream;

//// 输入和输出的文件路径
//        String inputFilePath = "C:\\Users\\QCY\\Desktop\\教务系统功能需求说明书.docx";  // 输入的文档路径
//        String outputFilePath = "C:\\Users\\QCY\\Desktop\\output.docx"; // 输出的文档路径

public class RemoveAllNumbers {
    public static void main(String[] args) {
        // 输入和输出文件路径
        String inputFilePath = "C:\\Users\\QCY\\Desktop\\教务系统功能需求说明书.docx";  // 输入的文档路径
        String outputFilePath = "C:\\Users\\QCY\\Desktop\\output.docx"; // 输出的文档路径

        try {
            // 打开 Word 文档
            FileInputStream fis = new FileInputStream(inputFilePath);
            XWPFDocument document = new XWPFDocument(fis);

            // 遍历文档中的所有段落
            for (XWPFParagraph paragraph : document.getParagraphs()) {
                // 检查段落是否是列表项（自动编号）
                if (paragraph.getNumID() != null) {
                    // 删除段落的编号
                    paragraph.setNumID(null);
                }

                // 手动编号的检测与删除
                String text = paragraph.getText();
                String cleanedText = text.replaceAll("^[0-9]+(\\.[0-9]+)*\\.?\\s*", ""); // 正则删除手动编号

                // 如果段落文本被修改，则更新段落
                if (!text.equals(cleanedText)) {
                    clearParagraph(paragraph); // 清空段落原内容
                    paragraph.createRun().setText(cleanedText); // 写入新内容
                }
            }

            // 保存修改后的文档
            FileOutputStream fos = new FileOutputStream(outputFilePath);
            document.write(fos);

            // 关闭文件流
            fos.close();
            document.close();
            fis.close();

            System.out.println("所有编号已删除，保存为：" + outputFilePath);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("处理文档时出错！");
        }
    }

    /**
     * 清空段落中的所有内容
     */
    private static void clearParagraph(XWPFParagraph paragraph) {
        for (int i = paragraph.getRuns().size() - 1; i >= 0; i--) {
            paragraph.removeRun(i);
        }
    }
}
